package org.example.examfx02.tool;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import java.io.*;
import java.util.Collections;
import java.util.List;

class JsonFileUtil {
    // 单例ObjectMapper，避免重复创建
    private static final ObjectMapper objectMapper = new ObjectMapper();
    public static <T> boolean saveListToJson(List<T> data, String filePath) {
        // 创建ObjectMapper实例，用于JSON处理
        try {
            // 写入JSON文件（带格式化）
            objectMapper.writerWithDefaultPrettyPrinter()
                    .writeValue(new File(filePath), data);
            System.out.println("List已成功写入JSON文件");
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
    // 从JSON文件读取列表
    public static <T> List<T> readJsonFile(String filePath, TypeReference<List<T>> typeReference) {
        // 使用当前类的类加载器获取资源，更可靠
        try (InputStream inputStream = ReadFile.class.getResourceAsStream("/" + filePath)) {
            if (inputStream == null) {
                System.err.println("找不到资源文件: " + filePath);
                return Collections.emptyList(); // 返回空列表而非null，避免空指针
            }
            return objectMapper.readValue(inputStream, typeReference);
        } catch (IOException e) {
            System.err.println("读取文件失败: " + filePath + "，错误信息: " + e.getMessage());
            return Collections.emptyList(); // 返回空列表而非null
        }
    }
}